/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.ec.tesis.prototiporecomendador.ui;

import edu.ec.tesis.prototiporecomendador.dao.GenericJpaController;
import edu.ec.tesis.prototiporecomendador.mdl.Loging;
import javax.annotation.Resource;
import javax.el.ELContext;
import javax.el.ValueExpression;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.transaction.UserTransaction;

/**
 *
 * @author javila
 */
@ManagedBean (name = "ctrLoginControlador")
@SessionScoped
public class CtrLoginControlador {

    /**
     * Creates a new instance of CtrLoginControlador
     */
     @Resource
    private UserTransaction utx = null;
    @PersistenceUnit(unitName = "recomendadorPU")
    private EntityManagerFactory emf = null;
    private String descripcion;
    private String clave;
    Loging usuario;
    GenericJpaController<Loging> controladorUsuario;
    
    private GenericJpaController<Loging> getJpaUsuarioController()
    {
        if(controladorUsuario==null)
            controladorUsuario= new GenericJpaController<Loging>(utx, emf);
        return controladorUsuario;
    }
    public CtrLoginControlador() {
    }
    
    public static CtrLoginControlador getInstance() {
        ELContext context = FacesContext.getCurrentInstance().getELContext();
        ValueExpression ex = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().
                createValueExpression(context, "#{ctrLoginControlador}", CtrLoginControlador.class);
        return (CtrLoginControlador) ex.getValue(context);
    }
    
    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getClave() {
        return clave;
    }
     
    public boolean getEstaLogueado(){
        return usuario!=null;
    }
    
    public void setClave(String clave) {
        this.clave = clave;
    }
    
    public String iniciaSecion()
    {
        try{
            usuario= getJpaUsuarioController().findEntities(new Loging(), "o.userName='"+descripcion+"' and o.password='"+clave+"'").get(0);
            if(usuario!=null)
                return "Principal.xhtml?faces-redirect=true";
            else
                return null;
        }catch(Exception ex){
            return null;
        }
    }

    public Loging getUsuario() {
        return usuario;
    }

    public void setUsuario(Loging usuario) {
        this.usuario = usuario;
    }
    
}
